package com.njwangbo.day08.demo03.view;

import com.njwangbo.day08.demo03.service.StudentService;
import com.njwangbo.day08.demo03.entity.Student;
import com.njwangbo.day08.demo03.service.impl.StudentServiceImpl;

import java.util.Scanner;

public class StudentInformationSystem {
    //初始化存放数据的数组
    //定义在类中的全局变量
    public static void main(String[] args) {
        /*
            学生信息录入系统
            用于存放学生信息的数组：Student[] stus;
            功能：
            1.添加学生信息：学号、姓名、成绩
                          学号不能重复
            2.修改学生信息：根据学号修改姓名和成绩
                          学号是否存在的判断
            3.删除学生信息：根据学号删除对应学生
                          学号是否存在的判断
            4.查询所有学生信息
            5.根据学号查询学生信息
            6.根据姓名查询学生信息
            7.根据学生的成绩进行从大到小排序展示所有学生信息
            8.退出系统 System.exit(0)
            要求：
            对于正常操作的数据根据以上三个数组进行正常录入或查询
            对于条件不满足的一些情形通过错误对用户做出错误提示
         */
        //int:sc.nextInt();
        //String:sc.nextLine();
        //double:sc.nextDouble();

        Scanner sc = new Scanner(System.in);
        System.out.println("##欢迎来到学生信息录入系统##");
        while (true) {
            System.out.println("1.添加学生信息");
            System.out.println("2.修改学生信息");
            System.out.println("3.删除学生信息");
            System.out.println("4.查询所有学生信息");
            System.out.println("5.根据学号查询学生信息");
            System.out.println("6.根据姓名查询学生信息");
            System.out.println("7.根据学生的成绩进行从大到小排序展示所有学生信息");
            System.out.println("8.退出系统");
            System.out.println("请选择：");
            int choose = sc.nextInt();
            switch (choose) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    modifyStudentByNo();
                    break;
                case 3:
                    removeStudentByNo();
                    break;
                case 4:
                    findAllStudents();
                    break;
                case 5:
                    findStudentByNo();
                    break;
                case 6:
                    findStudentByName();
                    break;
                case 7:
                    sortAndDisplayStudents();
                    break;
                case 8:
                    System.out.println("欢迎下次使用...");
                    System.exit(0);
                    break;
                default:
                    System.out.println("输入有误！请重新输入");
            }
        }
    }

    //录入学生信息
    public static void addStudent() {
        Scanner scanner = new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no = scanner.nextInt();
        //调用业务逻辑层的查询方法，判断学号是否存在
        StudentService studentService = new StudentServiceImpl();
        Student student = studentService.findStudentByNo(no);
        if (student != null) {
            System.out.println("学号已存在，请重新输入！");
            return;
        }
        //姓名
        System.out.println("请输入字符串的姓名：");
        String name = scanner.next();
        //成绩
        System.out.println("请输入小数的成绩：");
        double score = scanner.nextDouble();
        //创建学生对象
        Student students = new Student(no, name, score);
        //调用业务逻辑层的添加方法
        studentService.addStudent(students);
    }

    //修改学生信息
    public static void modifyStudentByNo() {
        Scanner sc = new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no = sc.nextInt();
        //调用业务逻辑层的查询方法，判断学号是否存在
        StudentService studentService = new StudentServiceImpl();
        Student student = studentService.findStudentByNo(no);
        if (student == null) {
            System.out.println("学号不存在，请重新输入！");
            return;
        }
        //姓名
        System.out.println("请输入字符串的姓名：");
        String name = sc.next();
        //成绩
        System.out.println("请输入小数的成绩：");
        double score = sc.nextDouble();
        //调用业务逻辑层的修改方法
        studentService.modifyStudent(no, name, score);
    }

    //删除学生信息
    public static void removeStudentByNo() {
        Scanner sc = new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no = sc.nextInt();
        //调用业务逻辑层的删除方法
        StudentService studentService = new StudentServiceImpl();
        studentService.removeStudent(no);
    }

    //查询所有学生信息
    public static void findAllStudents() {
        StudentService studentService = new StudentServiceImpl();
        Student[] students = studentService.findAllStudents();
        if (students.length == 0) {
            System.out.println("没有学生信息，请先添加学生信息！");
        } else {
            for (Student student : students) {
                System.out.println("学号："+student.getNo()+"， 姓名：" + student.getName() + "， 成绩：" + student.getScore());
            }
        }
    }

    //根据学号查询学生信息
    public static void findStudentByNo() {
        Scanner sc = new Scanner(System.in);
        //学号
        System.out.println("请输入整数的学号：");
        int no = sc.nextInt();
        //调用业务逻辑层的查询方法
        StudentService studentService = new StudentServiceImpl();
        Student student = studentService.findStudentByNo(no);
        if (student != null) {
            System.out.println("学号："+student.getNo()+"， 姓名：" + student.getName() + "， 成绩：" + student.getScore());
        } else {
            System.out.println("学生信息不存在，请检查学号是否正确！");
        }
    }

    //根据姓名查询学生信息
    public static void findStudentByName() {
        Scanner sc = new Scanner(System.in);
        //姓名
        System.out.println("请输入字符串的姓名：");
        String name = sc.next();
        //调用业务逻辑层的查询方法
        StudentService studentService = new StudentServiceImpl();
        Student student = studentService.findStudentByName(name);
        if (student != null) {
            System.out.println("学号："+student.getNo()+"， 姓名：" + student.getName() + "， 成绩：" + student.getScore());
        } else {
            System.out.println("学生信息不存在，请检查姓名是否正确！");
        }
    }

    //根据学生的成绩进行从大到小排序展示所有学生信息
    public static void sortAndDisplayStudents() {
        StudentService studentService = new StudentServiceImpl();
        Student[] students = studentService.sortStudents();
        if (students.length == 0) {
            System.out.println("没有学生信息，请先添加学生信息！");
        } else {
            for (Student student : students) {
                System.out.println("学号："+student.getNo()+"， 姓名：" + student.getName() + "， 成绩：" + student.getScore());
            }
        }
    }
}
